package main

// Slice 和 Map 都包含了对底层存储数据的指针，所以注意在修改 slice 或者 map 数据的场景下，是不是使用了引用。
func main() {

}

// slice 和 map 作为参数
// 当把 slice 和 map 作为参数的时候，如果我们对 slice 或者 map 的做了引用操作，
//那么修改会修改掉原始值。如果这种修改不是预期的，那么要先进行 copy。

type Trip struct {
}
type Driver struct {
	trips []Trip
}

// Good
func (d *Driver) SetTrips(trips []Trip) {
	d.trips = make([]Trip, len(trips))
	copy(d.trips, trips)
}

// Bad
func (d *Driver) SetTrips2(trips []Trip) {
	// bad
	//
	d.trips = trips
}
